/**   
 * Copyright © 2019 eSunny Info. Tech Ltd. All rights reserved.
 * 
 * 功能描述：
 * @Package: com.tce.cvm 
 * @author: Yannis   
 * @date: 2019年9月26日 下午3:22:45 
 */
package com.tce.cvm;

import com.alibaba.fastjson.annotation.JSONField;

public class RunInstancesRequest {

	/**
	 * 指定有效的[镜像](https://cloud.tencent.com/document/product/213/4940)ID，格式形如`img-xxx`。镜像类型分为四种：<br/>
	 * <li>公共镜像</li>
	 * <li>自定义镜像</li>
	 * <li>共享镜像</li>
	 * <li>服务市场镜像</li><br/>
	 * 可通过以下方式获取可用的镜像ID：<br/>
	 * <li>`公共镜像`、`自定义镜像`、`共享镜像`的镜像ID可通过登录[控制台](https://console.cloud.tencent.com/cvm/image?rid=1&imageType=PUBLIC_IMAGE)查询；`服务镜像市场`的镜像ID可通过[云市场](https://market.cloud.tencent.com/list)查询。</li>
	 * <li>通过调用接口 [DescribeImages](https://cloud.tencent.com/document/api/213/15715)
	 * ，取返回信息中的`ImageId`字段。</li>
	 */
	private String ImageId;

	/**
	 * 实例[计费类型](https://cloud.tencent.com/document/product/213/2180)。<br>
	 * <li>PREPAID：预付费，即包年包月<br>
	 * <li>POSTPAID_BY_HOUR：按小时后付费<br>
	 * <li>CDHPAID：独享子机（基于专用宿主机创建，宿主机部分的资源不收费）<br>
	 * <li>SPOTPAID：竞价付费<br>
	 * 默认值：POSTPAID_BY_HOUR。
	 */
	private String InstanceChargeType;

	/**
	 * 实例机型。不同实例机型指定了不同的资源规格。 <br>
	 * <li>对于付费模式为PREPAID或POSTPAID\_BY\_HOUR的实例创建，具体取值可通过调用接口[DescribeInstanceTypeConfigs](https://cloud.tencent.com/document/api/213/15749)来获得最新的规格表或参见[实例类型](https://cloud.tencent.com/document/product/213/11518)描述。若不指定该参数，则默认机型为S1.SMALL1。<br>
	 * <li>对于付费模式为CDHPAID的实例创建，该参数以"CDH_"为前缀，根据cpu和内存配置生成，具体形式为：CDH_XCXG，例如对于创建cpu为1核，内存为1G大小的专用宿主机的实例，该参数应该为CDH_1C1G。
	 */
	private String InstanceType;

	/**
	 * 购买实例数量。包年包月实例取值范围：[1，300]，按量计费实例取值范围：[1，100]。默认取值：1。指定购买实例的数量不能超过用户所能购买的剩余配额数量，具体配额相关限制详见[CVM实例购买限制](https://cloud.tencent.com/document/product/213/2664)。
	 */
	private Integer InstanceCount;

	/**
	 * 实例显示名称。<br>
	 * <li>不指定实例显示名称则默认显示‘未命名’。</li>
	 * <li>购买多台实例，如果指定模式串`{R:x}`，表示生成数字`[x,
	 * x+n-1]`，其中`n`表示购买实例的数量，例如`server_{R:3}`，购买1台时，实例显示名称为`server_3`；购买2台时，实例显示名称分别为`server_3`，`server_4`。支持指定多个模式串`{R:x}`。</li>
	 * <li>购买多台实例，如果不指定模式串，则在实例显示名称添加后缀`1、2...n`，其中`n`表示购买实例的数量，例如`server_`，购买2台时，实例显示名称分别为`server_1`，`server_2`。
	 */
	private String InstanceName;

	/**
	 * 置放群组id，仅支持指定一个。
	 */
	private String[] DisasterRecoverGroupIds;

	/**
	 * 提供给实例使用的用户数据，需要以 base64 方式编码，支持的最大数据大小为
	 * 16KB。关于获取此参数的详细介绍，请参阅[Windows](https://cloud.tencent.com/document/product/213/17526)和[Linux](https://cloud.tencent.com/document/product/213/17525)启动时运行命令。
	 */
	private String UserData;

	/**
	 * @return the imageId
	 */
	@JSONField(name = "ImageId")
	public String getImageId() {
		return ImageId;
	}

	/**
	 * @param imageId the imageId to set
	 */
	public void setImageId(String imageId) {
		ImageId = imageId;
	}

	/**
	 * @return the instanceChargeType
	 */
	@JSONField(name = "InstanceChargeType")
	public String getInstanceChargeType() {
		return InstanceChargeType;
	}

	/**
	 * @param instanceChargeType the instanceChargeType to set
	 */
	public void setInstanceChargeType(String instanceChargeType) {
		InstanceChargeType = instanceChargeType;
	}

	/**
	 * @return the instanceType
	 */
	@JSONField(name = "InstanceType")
	public String getInstanceType() {
		return InstanceType;
	}

	/**
	 * @param instanceType the instanceType to set
	 */
	public void setInstanceType(String instanceType) {
		InstanceType = instanceType;
	}

	/**
	 * @return the instanceCount
	 */
	@JSONField(name = "InstanceCount")
	public Integer getInstanceCount() {
		return InstanceCount;
	}

	/**
	 * @param instanceCount the instanceCount to set
	 */
	public void setInstanceCount(Integer instanceCount) {
		InstanceCount = instanceCount;
	}

	/**
	 * @return the instanceName
	 */
	@JSONField(name = "InstanceName")
	public String getInstanceName() {
		return InstanceName;
	}

	/**
	 * @param instanceName the instanceName to set
	 */
	public void setInstanceName(String instanceName) {
		InstanceName = instanceName;
	}

	/**
	 * @return the disasterRecoverGroupIds
	 */
	@JSONField(name = "DisasterRecoverGroupIds")
	public String[] getDisasterRecoverGroupIds() {
		return DisasterRecoverGroupIds;
	}

	/**
	 * @param disasterRecoverGroupIds the disasterRecoverGroupIds to set
	 */
	public void setDisasterRecoverGroupIds(String[] disasterRecoverGroupIds) {
		DisasterRecoverGroupIds = disasterRecoverGroupIds;
	}

	/**
	 * @return the userData
	 */
	@JSONField(name = "UserData")
	public String getUserData() {
		return UserData;
	}

	/**
	 * @param userData the userData to set
	 */
	public void setUserData(String userData) {
		UserData = userData;
	}
	
}
